package gof_003_行为型_Behavioral.gof_001_模板方法_TemplateMethod.gof_002_TemplateMethod;

/**
 * 规定步骤：个性化内容特殊处理
 */
public abstract class DayTemplate {
    private void step1_getUp() {
        System.out.println("清晨起床打开窗，心情美美哒");
    }

    private void step2_brushTeeth() {
        System.out.println("刷牙洗脸上班去，努力挣钱呀");
    }

    public abstract void step3_doXXX();

    private void step4_sleep() {
        System.out.println("夜深人静月明中，晚安好梦");
    }

    /**
     * 将其他方法私有化,不给外部访问
     * 只留下 抽象方法 让子类重写
     * 并提供公开方法让外部调用,并且将该方法 final,不允许重写,防止改变模板顺序
     */
    public final void dailyLife(){
        step1_getUp();
        step2_brushTeeth();
        step3_doXXX();
        step4_sleep();
    }
}